Method and system for determining states of tasks based on activities associated with the tasks over a predetermined period of time

ABSTRACT

For a given user, a task database system associated with the user is queried to identify a list of tasks associated with the user. For each of the tasks, an email system associated with the user is queried to obtain one or more emails and calendar events associated with the task. An IM system associated with the user is queried to obtain IM messages of an IM channel of which the user is a member. The IM channel has been specifically created to exchange messages concerning the task amongst the members of the IM channel. The task is then determined whether it satisfies a predetermined state (e.g., inactive, lack of future meetings) in view of emails, calendar events, and IM messages associated with the task based on a set of rules. If the task is determined to satisfy the predetermined state, a notification message is transmitted to a preconfigured destination.

FIELD OF THE INVENTION

Embodiments of the present invention relate generally to taskmanagement. More particularly, embodiments of the invention relate tocategorizing and determining states of tasks based on activities of thetasks over a period of time.

BACKGROUND

A project manager managing a team of team members is constantly strivingto be aware of the progress in each of the projects managed by his teamto be able to guide to work effectively and efficiently. Today, it is astruggle for a manager to find the information most relevant and findthe projects that require attentions or actions. Project managers aretoo often working on multiple projects concurrently and can lose sightof the progress in some of them.

Although project specific communication platforms such as instantmessaging exist, none of them tackle the problem of automaticallydelivering insights to the users at the right moments to take actions.This results in the instant messaging (IM) tools not being widely usedto improve communications of the project development.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the invention are illustrated by way of example and notlimited to the figures of the accompanying drawings in which likereferences indicate similar elements.

FIGS. 1A and 1B are block diagrams illustrating a network configurationaccording to certain embodiments of the invention.

FIG. 2 is a block diagram illustrating an example of a projectmanagement system according to one embodiment of the invention.

FIG. 3 is a block diagram illustrating an architecture of projectsaccording to one embodiment of the invention.

FIG. 4 is a block diagram illustrating an example of a data structurerepresenting a user database according to one embodiment.

FIG. 5 is a flow diagram illustrating a process of determining status ofprojects according to one embodiment.

FIG. 6 is a flow diagram illustrating a process of identifying projectsassociated with a user according to one embodiment.

FIG. 7 is a flow diagram illustrating a process of determining whether aproject satisfies a condition according to one embodiment.

FIG. 8 is a flow diagram illustrating a process of determining whether aproject satisfies a condition according to another embodiment.

FIG. 9 is a block diagram illustrating a data processing systemaccording to one embodiment.

DETAILED DESCRIPTION

Various embodiments and aspects of the inventions will be described withreference to details discussed below, and the accompanying drawings willillustrate the various embodiments. The following description anddrawings are illustrative of the invention and are not to be construedas limiting the invention. Numerous specific details are described toprovide a thorough understanding of various embodiments of the presentinvention. However, in certain instances, well-known or conventionaldetails are not described in order to provide a concise discussion ofembodiments of the present inventions.

Reference in the specification to “one embodiment” or “an embodiment”means that a particular feature, structure, or characteristic describedin conjunction with the embodiment can be included in at least oneembodiment of the invention. The appearances of the phrase “in oneembodiment” in various places in the specification do not necessarilyall refer to the same embodiment.

According to some embodiments, a project management platform is utilizedto automatically generate and deliver insightful messages to the userswho are most interested in the status or state of tasks to take furtheractions. By doing so, project managers and their team members can bealerted about the status of the projects early. The direct integrationof such insights into an IM platform instantly allows users to takedirect actions on those tasks. A significant technical advantage is totap into multiple different sources of information (e.g., an emailsystem, calendar system, IM system, task database system), to find themost relevant insights of the tasks to share amongst the relevantpeople, and to leverage a high-engagement platform as a vehicle fordelivering the insights. The system is able to automatically detectcharacteristics of each task being worked on and to detect abnormalstatus or state of the task early based on the information obtained fromdifferent sources. As a result, an action can be taken to ensure thetask is on track to be completed before it is too late.

According to one embodiment, for a given user, a task database systemassociated with the user is queried to identify a list of one or moretasks that are associated with the user (e.g., an owner of the task, amanager of a user who is an owner of the task). For each of the tasksassociated with the user, an email system associated with the user isqueried to obtain one or more emails and calendar events associated withthe task. An IM system associated with the user is queried to obtain IMmessages of an IM channel of which the user is a member. The IM channelhas been specifically created to exchange messages concerning the taskamongst the members of the IM channel. The task is then determinedwhether it satisfies a predetermined condition or state (e.g., at riskof failure to complete, finish, or close) in view of emails, calendarevents, and IM messages associated with the task based on a set of statedetermination rules. If the task is determined to satisfy thepredetermined state, a notification message is transmitted to apreconfigured destination (e.g., task owner, manager of task owner orteam members).

In one embodiment, based on the emails, calendar event, and IM messages,it is determined whether a period of time (e.g., number of days) sincethe last time the task was updated is greater than a first predeterminedthreshold. It is further determined whether a period of time since thelast message was posted in an IM channel of the task is greater than asecond predetermined threshold. It is further determined whether thetask expects to be completed within a predetermined period of time(e.g., current fiscal quarter or year). It is further determined whethera period of time since the last time the task was determined satisfyingthe predetermined state is greater than a third predetermined threshold.It is further determined whether the IM channel associated with the taskincludes a member other than an owner of the task. If any one or more ofthe above conditions are met, the task may be considered or categorizedas satisfying a predetermined condition or a predetermined state, forexample, as an inactive task, which may be at risk of failure tocomplete. As a result, an action may be taken. In one embodiment, a taskreaches a predetermined state or condition (e.g., inactive project) ifall of the above conditions are met.

In another embodiment, based on the emails, calendar event, and IMmessages, it is determined whether there was a meeting associated withthe task conducted in a past predetermined period of time. It is furtherdetermined whether a period of time since the last meeting of the taskwas conducted exceeds a first predetermined threshold. It is furtherdetermined whether there is no meeting scheduled in a futurepredetermined period of time. It is further determined whether a periodof time since the last time the project satisfied the predeterminedstate is greater than a second predetermined threshold. If any one ormore of the above conditions are met, the task may be considered orcategorized as satisfying a predetermined condition, for example, aslack of future meetings, which may be at risk of failure to complete. Asa result, a meeting may be scheduled to follow up. In one embodiment, atask reaches a predetermined state or condition (e.g., lack of futuremeetings) if all of the above conditions are met.

Note that throughout this application, a project is utilized as anexample of a task performed by a user of a group of users. A taskmanager can also be referred to as a project manager, and the terms of“task manager” and “project manager” are interchangeable terms forillustration purpose throughout the entire application. Similarly, acustomer relationship management or CRM system is utilized as an exampleof a task database system, and the terms of “task database system” and“CRM system” are interchangeable terms for illustration purposethroughout the entire application.

FIG. 1A is a block diagram illustrating a network configurationaccording to one embodiment of the invention. Referring to FIG. 1A,system 100 includes, but is not limited to, one or more client systems101-102 communicatively coupled to servers 104-105 over network 103.Clients 101-102 may be any type of clients such as a host or server, apersonal computer (e.g., desktops, laptops, and tablets), a “thin”client, a personal digital assistant (PDA), a Web enabled appliance, ora mobile phone (e.g., Smartphone), etc. Network 103 may be any type ofnetworks such as a local area network (LAN), a wide area network (WAN)such as the Internet, or a combination thereof, wired or wireless.Servers 104-105 can be any kinds of servers or a cluster of servers,such as, for example, Web servers, application servers, cloud servers,backend servers, etc.

Task database system/server 105 provides task data services to a varietyof clients, which may be periodically or constantly accessed and updatedby the clients for managing their task management data or other projectmanagement data. An example of task database system 105 is a CRM systemthat provides CRM data services. Task or CRM data includes any kinds ofcustomer relationship management data, such as, for example, projects,tasks, deals, contracts, etc. The CRM services may be provided by avariety of CRM vendors, such as, for example Salesforce.com, SAP AG,Oracle, and Microsoft. CRM is a term that refers to practices,strategies and technologies that companies use to manage and analyzecustomer interactions and data throughout the customer lifecycle, withthe goal of improving business relationships with customers, assistingin customer retention and driving sales growth. CRM systems are designedto compile information on customers across different channels or pointsof contact between the customer and the company, which could include thecompany's website, telephone, live chat, direct mail, marketingmaterials and social media.

In one embodiment, data analytics system or sever 104 (also referred toas a project management system or server) provides task/projectmanagement and/or data analytics services to clients 101-102 based onCRM data provided by CRM system 105 as a data source. Note that althoughthere is only one CRM system shown, multiple CRM systems may also beimplemented, where project management system 104 may be implemented as amulti-tenancy system that can access multiple CRM systems concurrentlyover network 103. For example, a user of client device 101 may beassociated with a first organization as a first corporate client toproject management system 104, while a user of client device 102 may beassociated with a second organization as a second corporate client toproject management system 104. The first and second organizations mayemploy different ones of CRM systems 105. Also note that a CRM system isutilized as an example of data sources, however, other types of datasources or systems can also be applied.

In one embodiment, project management system 104 includes, but it is notlimited to, task manager 110 (also referred to as a project manager),email manager 115, channel manager 120, and data store 130. The projectmanagement system 104 may further include a user interface (not shown),which can be any kind of user interface (e.g., Web, graphical userinterface or GUI, or command line interface or CLI) that allows users ofclient devices 101-102 to access the services provided by projectmanagement system 104. In one embodiment, such a service may includeautomatically identifying a project that satisfies a predeterminedcondition (e.g., inactive, lack of future meetings), which may requirean attention or action to follow through. Such a project may beidentified based on information obtained from a variety of data sources,such as, for example, emails, calendar events, IM messages, and CRMsystems. A project can be any kind of projects such as a sales project(also referred to as an opportunity).

Data store 130 stores or caches CRM data of a variety of projects, whichmay be periodically updated from the corresponding data source(s) ordata provider(s), in this example, CRM system(s) 105. Alternatively,task manager 110 and/or channel manager 120 may directly access CRMsystem(s) 105 to query and retrieve the CRM data. Data stored in datastore 130 can be maintained in a variety of data structures, such astables or databases. Task manager 110 and/or channel manager 120 canaccess data store 130 via a variety of application programminginterfaces (APIs), database queries, or other suitable communicationprotocols (e.g., structured query language or SQL).

According to one embodiment, task manager 110 is configured tocommunicate and interact with task database system 105 (e.g., a customerrelationship management or CRM system) to obtain task information oftasks maintained in task database system 105. Task manager 110 cancommunicate with task database system 105 via an application programminginterface (API) and/or using a communication protocol. For a given user,task manager 110 can communicate with task database system 105 toretrieve a list of tasks that are associated with the user. A user canbe an owner of a task, a team member of a team managing the task, or amanager of owners or teams of tasks. For a given task, task manager 110can also obtain properties or attributes of the task from task databasesystem 105 as a part of task information. Task manager 110 is configuredto communicate with task database system(s) 105 using a variety of APIsor protocols compatible with task database system(s) 105.

In one embodiment, for a given project associated with a user, emailmanager 115 is configured to communicate with email system 106 toidentify and obtain a list of emails and/or calendar events associatedwith the user and the project. Email manager 115 can search via an APIbased on a user ID of the user (e.g., an email address associated with asender or recipient of emails, a participant of meetings) and projectkeywords (e.g., subject or title field) of the project to identify therelevant emails and calendar events.

In one embodiment, for each of the projects maintained in CRM system105, an IM channel (e.g., IM group chat) is created to allow usersassociated with the project to exchange messages concerning developmentof the project with each other. Channel manager 120 is configured tocommunicate with IM system 107 via an API to retrieve IM messages of aparticular IM channel of a particular project. Channel manager 120 canfurther derive IM channel statistics of the IM channel based on the IMmessages obtained from IM system 107.

Project manager 110, email manager 115, and channel manager 120 aretapping into multiple different sources (e.g., CRM systems 105, emailservers 106, and communication systems 107) of information to find themost relevant projects that need an attention or action from the user orother people. In one embodiment, based on the project information, emailand calendar information, and IM channel information, it can bedetermined whether a particular project satisfies a predeterminedcondition, such as, for example, whether the project is at risk offailure to complete. For example, based on the information obtained fromCRM system 105, email server 106, and IM server 107, a risk detector(not shown) can detect that a project is inactive or lacks of futuremeetings. As a result, an action should be taken or an attention shouldbe brought to someone before it is too late. By automatically scanningCRM system 105, email system 106, and IM system 107, the projects atrisk can be automatically identified and a remedial action can beperformed in time.

Although in this embodiment, data store 130 is maintained by projectmanagement system 104, however, data store 130 can be maintained in adedicated data server that is a separate server from project managementserver 104 as shown in FIG. 1B. Referring now to FIG. 1B, in thisembodiment, project management server 104A and data server 104B areimplemented as separate servers, which may be operated by the same ordifferent organizations or entities. Data store 130 is now maintained bydata server 104B. Data server 104B further includes data collector 135configured to periodically or constantly collect or update CRM data fromdata sources 105. Project management server 104A communicates with dataserver 104B using a variety of communication protocols to access taskdata stored in data store 130.

FIG. 2 is a block diagram illustrating an example of a projectmanagement system according to one embodiment of the invention. System200 may be implemented as part of project management system or server104. Referring to FIG. 2, system 200 includes project manager 110, emailmanager 115, channel manager 120, user manager 211, and task statedetermination module 212 (also referred to as a risk detector). Thesecomponents or modules can be implemented in software, hardware, or acombination thereof. Some of these components or modules may beintegrated into fewer integrated components or modules. For example,these components or modules can be loaded in memory 201 (e.g., volatilememory such as random access memory or RAM) and executed by one or moreprocessors 202 (e.g., microprocessors, central processing units orCPUs). Data store 130 is stored in persistent storage device 203, suchas a hard disk, which may be maintained locally or remotely over anetwork. At least a portion of data stored in data store 130 may becached in memory 201.

As described above, project manager 110 is configured to communicate andinteract with CRM system 105 to obtain project information of projectsmaintained in CRM system 105. Project manager 110 can communicate withCRM system 105 via an application programming interface (API) and/orusing a communication protocol. For a given user, project manager 110can communicate with CRM system 105 to retrieve a list of projects thatare associated with the user. The user can be an owner of a project, ateam member of a team managing the project, or a manager of owners orteams of projects. For a given project, project manager 110 can alsoobtain properties or attributes of the project from CRM system 105 as apart of project information. Project manager 110 is configured tocommunicate with CRM system(s) 105 using a variety of APIs or protocolscompatible with CRM system(s) 105.

For a given project associated with a user, email manager 115 isconfigured to communicate with email system 106 to identify and obtain alist of emails and/or calendar events associated with the user and theproject. Email manager 115 can search via an API based on a user ID ofthe user (e.g., as a sender or recipient of emails, a participant ofmeetings) and project keywords (e.g., subject or title field) of theproject to identify the relevant emails and calendar events.

For each of the projects maintained in CRM system 105, an IM channel(e.g., IM group chat) is created to allow users associated with theproject to exchange messages concerning the project from each other.Channel manager 120 is configured to communicate with IM system 107 viaan API to retrieve IM messages of a particular IM channel of aparticular project. Channel manager 120 can further derive IM channelstatistics of the IM channel based on the IM messages obtained from IMsystem 107.

In order to search and find a project that is associated with a user,the user has to register its user identifier (ID), IM address(es), emailaddress(es), and a CRM system associated with the user. The user canregister or configure such information via a configuration interfacehosted by system 200 (not shown) and the registration information can bestored and maintained in user database 220. An example of user database220 is shown in FIG. 4 according to one embodiment. The registered IMand email addresses can be utilized to communicate with the user, suchas, for example, for notification of projects at risk. User database 220may further store user login credentials (e.g., usernames, passwords) ofusers to allow the system to automatically log into the email/calendarsystems, the IM systems, and the CRM systems on behalf of the users toobtain necessary project information, IM channel information, andemail/calendar event information, without user intervention of theusers.

A user can be associated with one or more projects and each project isassociated with a communication channel to allow members of thecommunication channel to discuss the corresponding project as shown inFIG. 3. Referring to FIG. 3, user 301 may be associated with one or moreprojects 302A-302C. For example, user 301 may be an individual sales orcustomer representative working on projects 302A-302C concurrently.Alternatively, user 301 may be a manager or group leader of a team orgroup of individual users working on projects 302A-302C. Each ofprojects 302A-302C may be associated with the same or differententerprise clients (e.g., corporate clients). Each of projects 302A-302Cis associated with a communication channel such as communicationchannels 303A-303C respectively. Each of channels 303A-303C can have oneor more members such as members 304A-304C. A user can be automaticallyadded to any of communication channels 303A-303C and can also beautomatically removed from any of communication channels 303A-303C undercertain circumstances.

Referring now to FIGS. 1A-1B and 2, according to one embodiment of theinvention, user manager 211 determines a list of users that haveregistered with the system based on information obtained from userdatabase 220. For each of the identified users, project manager 110queries CRM system 105 obtain a list of projects that are associatedwith the user. CRM system 105 may be a CRM system associated with orutilized by an Enterprise client that the user is working with as acustomer representative or sales representative.

In one embodiment, when project manager 110 queries CRM system 105, itsends a query request to CRM system 105, where the query requestincludes certain parameters to specify the user and an attribute havinga particular attribute value. In response, CRM system 105 searches basedon the query request to identify and retrieve the list of projects thatsatisfy the query request. Alternatively, project manager 110 mayperform filtering of projects to identify the subset of projects thatare associated with a particular user.

Alternatively, for each of the projects found in CRM system 105, channelmanager 120 identifies an IM channel that has been created specificallyfor the project. Channel manager 120 or project manager 110 may maintaina mapping table having a number of mapping entries (not shown). Eachmapping entry maps a project ID identifying a project to an IM channelID identifying an IM channel. Alternatively, the IM channel ID may bestored as a part of project attributes of a project stored in CRM system105. Alternatively, a project ID of the project may be stored as a partof channel attributes maintained in IM system 107. Channel manager 120communicates with IM system 107 to determine whether a particular useris a member of the IM channel of the project. If that particular user isa member of the IM channel of the project, the project is considered tobe associated with or relevant to the user. Note that throughout thisapplication, an IM system is utilized as an example of a communicationsystem. Other types of communication mechanisms (e.g., social networkcommunity) may also be applied.

According to one embodiment, for each user identified by user manager211, channel manager 120 queries IM system 107 to search and find allthe IM channels of which the user is a member. Channel manager 120 alsoretrieves channel information of each IM channel including, but is notlimited to, all members of the IM channel and the recent activities ofthe IM channel. For example, for a given IM channel, channel manager 120may determine the date of the last message posted by a member of thechannel, a period of time (e.g., a number of days) since the lastmessage was posted by a member, the last time a risk of a projectassociated with the IM channel was identified and notified, a period oftime (e.g., a number of days) since the last risk of the associatedproject was identified and notified, and/or whether there are anymembers in the channel other than the owner of the associated project.An owner of a project refers to a lead person or project leader incharge with the development of project, while a team member is someonewho works on the project under the leadership or supervision of theowner.

According to one embodiment, for each IM channel of which a user is amember, project manager 110 accesses CRM system 105 to search andidentify a project associated with the IM channel and the user. Forexample, if the user is an owner of a project, that project will beconsidered to be associated with the user. If the user is the earliestmember of an IM channel and is still active, and the owner of a projectis not a member of the IM channel, the project will be considered to beassociated with the user. In other words, if the user is not theearliest member added to the IM channel and the owner of the project isnot a member of the IM channel, that particular project is considered asrelevant to the that earliest member of the IM channel. The earliestmember of an IM channel refers to the earliest overall member that waschronologically added to the IM channel and he/she is still a member toremain active.

Note that this process is repeatedly performed for each of the usersthat have registered with the system. If the current user is not theearliest member added to the IM channel and the user is not an owner ofthe corresponding project, the corresponding project will not beselected to be associated with the current user. However, in anotheriteration of the process performed for the earliest member of the IMchannel, the project may be selected to be associated with thatparticular earliest member. This project identifying process ensuresthat the same project is not scanned and selected twice.

In addition, project manager 110 retrieves certain project informationof a project from CRM system 105. In one embodiment, some of the projectinformation may be determined dynamically in real-time. For example, aperiod of time since the last meeting was conducted may be determined inreal-time based on the time stamp of the corresponding calendar eventand the current system time. The project information of a projectincludes, but is not limited to, a complete date of the project, aperiod of time (e.g., a number of days) to the complete date, whetherthe project is expected to be completed in a future predetermined periodof time (e.g., current fiscal month, quarter, or year), the date of theproject was last updated, and/or a period of time (e.g., days) since thelast update.

According to one embodiment, for a given project and a given user, emailmanager 115 is configured to access email server 106 to obtain a list ofemails and calendar events that are associated with the project and theuser. Email manager 115 may search emails and calendar events based on auser ID of the user (e.g., an email address as a sender or a recipient)and one or more keywords of the project (e.g., title, subject field). Inaddition, email manager 115 retrieves and determines certainemail/calendar information concerning the project. The email/calendarinformation may include, but is not limited to, whether there were anymeetings occurred in the past with the relevant parties (e.g.,customers) associated with the project, whether there was a meetingconducted in the past, the most recent meeting and a period of time(e.g., days) since the most recent meeting, and/or whether there is afuture meeting scheduled for the project.

The above collected project information, channel information, andemail/calendar information collectively represent the activities of thecorresponding project. Such activity information may provide a hintindicating whether the development of the project is making insufficientprogress that may lead to a failure of completing the project. Based onthe project information, channel information, and email/calendarinformation, according to one embodiment, task state determinationmodule 212 is configure to detect whether a particular project is atrisk of failure to complete, for example, due to lack of activities orprogress. The task state determination module 212 may determine whethera project is at risk by satisfying a predetermined condition based onthe project information, channel information, and email/calendarinformation according a set of risk determining rules 215. Rules 215 maybe user configurable based on the specific requirements of enterpriseentities. Each enterprise client may have a different set of rulesgoverning whether a particular project is at risk.

If it is determined that a project is at risk as satisfying apredetermined condition set forth in rules 215, a notification may besent to a preconfigured destination (e.g., owner of the project, amanager). Any user can be a member of one or more channels of one ormore projects. Thus, any user may receive more than one notificationidentifying one or more projects at risk. These projects at risk can begrouped by type and a single message may be generated with a list ofprojects at risk. The messages can be sent to a user via user's privatecommunication channel (e.g., IM, email), corporate channel, etc.

FIG. 5 is a flow diagram illustrating a process of determining status ofprojects according to one embodiment. Process 500 may be performed byprocessing logic which may include software, hardware, or a combinationthereof. For example, process 500 may be performed by system 200 of FIG.2. Referring to FIG. 5, in operation 501, processing logic identifies alist of one or more users who have registered their CRM systems (e.g.,task database), email addresses, and IM systems. Such registrationinformation may be stored in user database 220. In operation 502, foreach of the users, processing logic identifies a list of one or moreprojects or tasks that are associated with the user. For example, if aproject whose IM channel includes the user as a member, the project isconsidered to be associated with the user. If a user is an owner of aproject, the user is associated with the project. If a user is includedin an email (e.g., as a sender or recipient) associated with a project,the user may be considered to be associated with the project. Inoperation 503, for each of the projects associated with the user,processing logic determine whether the project satisfies a predeterminedcondition or state (e.g., at risk as of inactive or lack of futuremeetings) based on the project information obtained from a CRM system,email/calendar information obtained from an email server, and channelinformation obtained from an IM system, using a set of rules such astask state determination rules 215. In operation 504, if a project isdetermined satisfying a predetermined condition, processing logictransmits a notification to a preconfigured destination.

FIG. 6 is a flow diagram illustrating a process of identifying projectsassociated with a user according to one embodiment. Process 600 may beperformed as a part of operation 502 of FIG. 2. Referring to FIG. 6, inoperation 601, processing logic queries an IM system associated with aproject/task or a user to identify an IM channel of which the user is amember and obtain channel information of the IM channel (e.g.,activities). In operation 602, processing logic queries a CRM system toidentify one or more projects and obtain project information of theprojects. In operation 603, a project/task is selected from theidentified projects if the user is an owner of the selected project. Inoperation 604, a project/task is selected from the identified projectsif the first member of a corresponding IM channel is still active and anowner of the selected project is not a member of the IM channel. Thefirst member of an IM channel refers to the first overall member addedto the IM channel.

FIG. 7 is a flow diagram illustrating a process of determining whether aproject satisfies a condition according to one embodiment. Process 700may be performed as a part of operation 503 of FIG. 5 according to a setof risk determining rules 215. Referring to FIG. 7, in operation 701,for a given project, processing logic determines whether a period oftime (e.g., number of days) since the last time the project was updatedis greater than a first predetermined threshold. Whether a project/taskhas been updated can be determined based on project information obtainedfrom CRM system 105. In operation 702, processing logic determineswhether a period of time (e.g., number of days) since the last messagewas posted in an IM channel associated with the project/task is greaterthan a second predetermined threshold. Such a determination can beperformed based on the IM channel information obtained from the IMsystem.

In operation 703, processing logic determines whether the project/taskis expected to be completed in a predetermined period of time (e.g.,current month, quarter, or year). In operation 704, processing logicdetermines whether a period of time (e.g., number of days) since thelast time the project/task satisfied a predetermined condition/state(e.g., categorized as at risk) is greater than a third predeterminedthreshold. In operation 705, processing logic optionally determineswhether the IM channel associated with the project/task includes amember other than an owner of the project. The rationale behind this isthat the owner of the project will already be aware of the situationconcerning the project (e.g., no future meeting has been scheduled)since the owner is supposed to be actively thinking and working on theproject/task. As a result, one may not want to notify something that theowner might already be aware of. In operation 706, if any one or more ofthe above conditions set forth in operations 701-705 are satisfied, theproject/task is considered at risk as inactive, and an action should beperformed or an attention should be brought to someone. In oneembodiment, only if all of the conditions set forth in operations701-705 are satisfied, the corresponding project/task is considered atrisk.

FIG. 8 is a flow diagram illustrating a process of determining whether aproject/task satisfies a condition according to another embodiment.Process 800 may be performed as a part of operation 503 of FIG. 5according to a set of state/risk determining rules 215. Referring toFIG. 8, for a given project/task, in operation 801, processing logicdetermines whether there was any meeting scheduled and conducted in apast predetermined period of time. In operation 802, processing logicdetermines whether a period of time (e.g., number of days) since thelast meeting was conducted is greater than a first predeterminedthreshold. In operation 803, processing logic determines whether thereis no meeting that has been scheduled in a future predetermined periodof time. In operation 804, processing logic determines whether a periodof time (e.g., number of days) since the last time the project wasconsidered at risk by satisfying a predetermined condition/state isgreater than a second predetermined threshold. In operation 805, if oneor more of the above conditions set forth in operations 801-804 aresatisfied, the project/task may be considered at risk as of lack offuture meetings. In one embodiment, only if all of the conditions setforth in operations 801-804 are satisfied, the correspondingproject/task is considered at risk. A new follow-up meeting may beneeded soon.

Note that the above processes may be automatically and periodicallyperformed (e.g., a thread executed in the background or as a maintenanceroutine in the system) for each of the users in the system, for example,without user intervention of the users. The above predeterminedthresholds may be the same or different dependent upon the specificconfigurations required by the enterprise clients.

Note that some or all of the components as shown and described above(e.g., task manager 110, email manager 115, channel manager 120, usermanager 211, and/or task state determination module 212 of FIGS. 1A-1Band 2) may be implemented in software, hardware, or a combinationthereof. For example, such components can be implemented as softwareinstalled and stored in a persistent storage device, which can be loadedand executed in a memory by a processor (not shown) to carry out theprocesses or operations described throughout this application.Alternatively, such components can be implemented as executable codeprogrammed or embedded into dedicated hardware such as an integratedcircuit (e.g., an application specific IC or ASIC), a digital signalprocessor (DSP), or a field programmable gate array (FPGA), which can beaccessed via a corresponding driver and/or operating system from anapplication. Furthermore, such components can be implemented as specifichardware logic in a processor or processor core as part of aninstruction set accessible by a software component via one or morespecific instructions.

FIG. 9 is a block diagram illustrating an example of a data processingsystem which may be used with one embodiment of the invention. Forexample, system 1500 may represent any of data processing systemsdescribed above performing any of the processes or methods describedabove, such as, for example, a client device or a server describedabove, such as, for example, clients 101-102 and servers 104-107 ofFIGS. 1A-1B, as described above.

System 1500 can include many different components. These components canbe implemented as integrated circuits (ICs), portions thereof, discreteelectronic devices, or other modules adapted to a circuit board such asa motherboard or add-in card of the computer system, or as componentsotherwise incorporated within a chassis of the computer system.

Note also that system 1500 is intended to show a high level view of manycomponents of the computer system. However, it is to be understood thatadditional components may be present in certain implementations andfurthermore, different arrangement of the components shown may occur inother implementations. System 1500 may represent a desktop, a laptop, atablet, a server, a mobile phone, a media player, a personal digitalassistant (PDA), a Smartwatch, a personal communicator, a gaming device,a network router or hub, a wireless access point (AP) or repeater, aset-top box, or a combination thereof. Further, while only a singlemachine or system is illustrated, the term “machine” or “system” shallalso be taken to include any collection of machines or systems thatindividually or jointly execute a set (or multiple sets) of instructionsto perform any one or more of the methodologies discussed herein.

In one embodiment, system 1500 includes processor 1501, memory 1503, anddevices 1505-1508 via a bus or an interconnect 1510. Processor 1501 mayrepresent a single processor or multiple processors with a singleprocessor core or multiple processor cores included therein. Processor1501 may represent one or more general-purpose processors such as amicroprocessor, a central processing unit (CPU), or the like. Moreparticularly, processor 1501 may be a complex instruction set computing(CISC) microprocessor, reduced instruction set computing (RISC)microprocessor, very long instruction word (VLIW) microprocessor, orprocessor implementing other instruction sets, or processorsimplementing a combination of instruction sets. Processor 1501 may alsobe one or more special-purpose processors such as an applicationspecific integrated circuit (ASIC), a cellular or baseband processor, afield programmable gate array (FPGA), a digital signal processor (DSP),a network processor, a graphics processor, a network processor, acommunications processor, a cryptographic processor, a co-processor, anembedded processor, or any other type of logic capable of processinginstructions.

Processor 1501, which may be a low power multi-core processor socketsuch as an ultra-low voltage processor, may act as a main processingunit and central hub for communication with the various components ofthe system. Such processor can be implemented as a system on chip (SoC).Processor 1501 is configured to execute instructions for performing theoperations and steps discussed herein. System 1500 may further include agraphics interface that communicates with optional graphics subsystem1504, which may include a display controller, a graphics processor,and/or a display device.

Processor 1501 may communicate with memory 1503, which in one embodimentcan be implemented via multiple memory devices to provide for a givenamount of system memory. Memory 1503 may include one or more volatilestorage (or memory) devices such as random access memory (RAM), dynamicRAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), or other typesof storage devices. Memory 1503 may store information includingsequences of instructions that are executed by processor 1501, or anyother device. For example, executable code and/or data of a variety ofoperating systems, device drivers, firmware (e.g., input output basicsystem or BIOS), and/or applications can be loaded in memory 1503 andexecuted by processor 1501. An operating system can be any kind ofoperating systems, such as, for example, Windows® operating system fromMicrosoft®, Mac OS®/iOS® from Apple, Android® from Google®, Linux®,Unix®, or other real-time or embedded operating systems such as VxWorks.

System 1500 may further include IO devices such as devices 1505-1508,including network interface device(s) 1505, optional input device(s)1506, and other optional IO device(s) 1507. Network interface device1505 may include a wireless transceiver and/or a network interface card(NIC). The wireless transceiver may be a WiFi transceiver, an infraredtransceiver, a Bluetooth transceiver, a WiMax transceiver, a wirelesscellular telephony transceiver, a satellite transceiver (e.g., a globalpositioning system (GPS) transceiver), or other radio frequency (RF)transceivers, or a combination thereof. The NIC may be an Ethernet card.

Input device(s) 1506 may include a mouse, a touch pad, a touch sensitivescreen (which may be integrated with display device 1504), a pointerdevice such as a stylus, and/or a keyboard (e.g., physical keyboard or avirtual keyboard displayed as part of a touch sensitive screen). Forexample, input device 1506 may include a touch screen controller coupledto a touch screen. The touch screen and touch screen controller can, forexample, detect contact and movement or break thereof using any of aplurality of touch sensitivity technologies, including but not limitedto capacitive, resistive, infrared, and surface acoustic wavetechnologies, as well as other proximity sensor arrays or other elementsfor determining one or more points of contact with the touch screen.

IO devices 1507 may include an audio device. An audio device may includea speaker and/or a microphone to facilitate voice-enabled functions,such as voice recognition, voice replication, digital recording, and/ortelephony functions. Other IO devices 1507 may further include universalserial bus (USB) port(s), parallel port(s), serial port(s), a printer, anetwork interface, a bus bridge (e.g., a PCI-PCI bridge), sensor(s)(e.g., a motion sensor such as an accelerometer, gyroscope, amagnetometer, a light sensor, compass, a proximity sensor, etc.), or acombination thereof. Devices 1507 may further include an imagingprocessing subsystem (e.g., a camera), which may include an opticalsensor, such as a charged coupled device (CCD) or a complementarymetal-oxide semiconductor (CMOS) optical sensor, utilized to facilitatecamera functions, such as recording photographs and video clips. Certainsensors may be coupled to interconnect 1510 via a sensor hub (notshown), while other devices such as a keyboard or thermal sensor may becontrolled by an embedded controller (not shown), dependent upon thespecific configuration or design of system 1500.

To provide for persistent storage of information such as data,applications, one or more operating systems and so forth, a mass storage(not shown) may also couple to processor 1501. In various embodiments,to enable a thinner and lighter system design as well as to improvesystem responsiveness, this mass storage may be implemented via a solidstate device (SSD). However in other embodiments, the mass storage mayprimarily be implemented using a hard disk drive (HDD) with a smalleramount of SSD storage to act as a SSD cache to enable non-volatilestorage of context state and other such information during power downevents so that a fast power up can occur on re-initiation of systemactivities. Also a flash device may be coupled to processor 1501, e.g.,via a serial peripheral interface (SPI). This flash device may providefor non-volatile storage of system software, including a basicinput/output software (BIOS) as well as other firmware of the system.

Storage device 1508 may include computer-accessible storage medium 1509(also known as a machine-readable storage medium or a computer-readablemedium) on which is stored one or more sets of instructions or software(e.g., module, unit, and/or logic 1528) embodying any one or more of themethodologies or functions described herein. Processingmodule/unit/logic 1528 may represent any of the components describedabove, such as, for example, task manager 110, email manager 115,channel manager 120, user manager 211, and/or task state determinationmodule 212 of FIGS. 1A-1B and 2, as described above. Processingmodule/unit/logic 1528 may also reside, completely or at leastpartially, within memory 1503 and/or within processor 1501 duringexecution thereof by data processing system 1500, memory 1503 andprocessor 1501 also constituting machine-accessible storage media.Processing module/unit/logic 1528 may further be transmitted or receivedover a network via network interface device 1505.

Computer-readable storage medium 1509 may also be used to store the somesoftware functionalities described above persistently. Whilecomputer-readable storage medium 1509 is shown in an exemplaryembodiment to be a single medium, the term “computer-readable storagemedium” should be taken to include a single medium or multiple media(e.g., a centralized or distributed database, and/or associated cachesand servers) that store the one or more sets of instructions. The terms“computer-readable storage medium” shall also be taken to include anymedium that is capable of storing or encoding a set of instructions forexecution by the machine and that cause the machine to perform any oneor more of the methodologies of the present invention. The term“computer-readable storage medium” shall accordingly be taken toinclude, but not be limited to, solid-state memories, and optical andmagnetic media, or any other non-transitory machine-readable medium.

Processing module/unit/logic 1528, components and other featuresdescribed herein can be implemented as discrete hardware components orintegrated in the functionality of hardware components such as ASICS,FPGAs, DSPs or similar devices. In addition, processingmodule/unit/logic 1528 can be implemented as firmware or functionalcircuitry within hardware devices. Further, processing module/unit/logic1528 can be implemented in any combination hardware devices and softwarecomponents.

Note that while system 1500 is illustrated with various components of adata processing system, it is not intended to represent any particulararchitecture or manner of interconnecting the components; as suchdetails are not germane to embodiments of the present invention. It willalso be appreciated that network computers, handheld computers, mobilephones, servers, and/or other data processing systems which have fewercomponents or perhaps more components may also be used with embodimentsof the invention.

Some portions of the preceding detailed descriptions have been presentedin terms of algorithms and symbolic representations of operations ondata bits within a computer memory. These algorithmic descriptions andrepresentations are the ways used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of operations leading to adesired result. The operations are those requiring physicalmanipulations of physical quantities.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the above discussion, itis appreciated that throughout the description, discussions utilizingterms such as those set forth in the claims below, refer to the actionand processes of a computer system, or similar electronic computingdevice, that manipulates and transforms data represented as physical(electronic) quantities within the computer system's registers andmemories into other data similarly represented as physical quantitieswithin the computer system memories or registers or other suchinformation storage, transmission or display devices.

Embodiments of the invention also relate to an apparatus for performingthe operations herein. Such a computer program is stored in anon-transitory computer readable medium. A machine-readable mediumincludes any mechanism for storing information in a form readable by amachine (e.g., a computer). For example, a machine-readable (e.g.,computer-readable) medium includes a machine (e.g., a computer) readablestorage medium (e.g., read only memory (“ROM”), random access memory(“RAM”), magnetic disk storage media, optical storage media, flashmemory devices).

The processes or methods depicted in the preceding figures may beperformed by processing logic that comprises hardware (e.g. circuitry,dedicated logic, etc.), software (e.g., embodied on a non-transitorycomputer readable medium), or a combination of both. Although theprocesses or methods are described above in terms of some sequentialoperations, it should be appreciated that some of the operationsdescribed may be performed in a different order. Moreover, someoperations may be performed in parallel rather than sequentially.

Embodiments of the present invention are not described with reference toany particular programming language. It will be appreciated that avariety of programming languages may be used to implement the teachingsof embodiments of the invention as described herein.

In the foregoing specification, embodiments of the invention have beendescribed with reference to specific exemplary embodiments thereof. Itwill be evident that various modifications may be made thereto withoutdeparting from the broader spirit and scope of the invention as setforth in the following claims. The specification and drawings are,accordingly, to be regarded in an illustrative sense rather than arestrictive sense.

What is claimed is:
 1. A computer-implemented method for determiningstates of tasks based on activities associated with the tasks, themethod comprising: querying a task database system associated with auser to identify a list of one or more tasks associated with the user;and for each of the tasks associated with the user, querying an emailserver associated with the user to obtain one or more emails and one ormore calendar events that are associated with the task, querying aninstant messaging (IM) server associated with the user to obtain IMmessages of an IM channel of which the user is a member, wherein the IMchannel was specifically created to exchange messages concerning thetask amongst members, determining based on a set of rules whether thetask satisfies a predetermined state in view of the emails, calendarevents, and IM messages associated with the task, and in response todetermining that the task satisfies the predetermined state,transmitting a notification to a predetermined destination regarding astate of the task.
 2. The method of claim 1, wherein querying a taskdatabase system associated with a user to identify a list of one or moretasks associated with the user comprises: selecting a task to berelevant to the user if the user is an owner of the task; and selectinga task to be relevant to the user if the user is an earliest member ofan IM channel associated with the task and the user is active, and anowner of the task is not a member of the IM channel.
 3. The method ofclaim 1, wherein determining whether the task satisfies a predeterminedstate in view of the emails, calendar events, and IM messages associatedwith the task based on a set of rules comprises: determining whether anumber of days since last time the task was updated is greater than afirst predetermined threshold; determining whether a number of dayssince a last message was posted in an IM channel associated with thetask is greater than a second predetermined threshold; and indicatingthat the task satisfies the predetermined state as inactive, if thenumber of days since last time the task was updated is greater than thefirst predetermined threshold and the number of days since a lastmessage was posted in an IM channel associated with the task is greaterthan the second predetermined threshold
 4. The method of claim 3,further comprising: determining whether the task expects to be completedwithin a predetermined period of time; determining whether a number ofdays since last time the task satisfied the predetermined state isgreater than a third predetermined threshold; and indicating that thetask satisfies the predetermined state as inactive, if the task expectsto be completed within the predetermined period of time and the numberof days since last time the task satisfied the predetermined state isgreater than the third predetermined threshold.
 5. The method of claim4, further comprising determining whether the IM channel associated withthe task includes a member other than an owner of the task, wherein thetask is categorized as inactive if the IM channel includes a memberother than an owner of the task.
 6. The method of claim 1, whereindetermining whether the task satisfies a predetermined state in view ofthe emails, calendar events, and IM messages associated with the taskbased on a set of rules comprises: determining whether there was ameeting associated with the task conducted in a part predeterminedperiod of time; determining whether a number of days since a lastmeeting of the task was conducted is greater than a first predeterminedthreshold; and indicating that the task satisfies the predeterminedstate as lack of future meetings, if there was a meeting associated withthe task conducted in the part predetermined period of time and thenumber of days since a last meeting of the task was conducted is greaterthan the first predetermined threshold.
 7. The method of claim 6,further comprising: determining whether there is a meeting that has beenscheduled in a future predetermined period of time; determining whethera number of days since last time the task satisfied the predeterminedstate is greater than a second predetermined threshold; and indicatingthat the task satisfies the predetermined state as lack of futuremeetings, if there is no meeting scheduled in the future predeterminedperiod of time and the number of days since last time the task satisfiedthe predetermined state is greater than the second predeterminedthreshold.
 8. A non-transitory machine-readable medium havinginstructions stored therein, which when executed by a processor, causethe processor to perform operations of determining a state of tasks, theoperations comprising: querying a task database system associated with auser to identify a list of one or more tasks associated with the user;and for each of the tasks associated with the user, querying an emailserver associated with the user to obtain one or more emails and one ormore calendar events that are associated with the task, querying aninstant messaging (IM) server associated with the user to obtain IMmessages of an IM channel of which the user is a member, wherein the IMchannel was specifically created to exchange messages concerning thetask amongst members, determining whether the task satisfies apredetermined state in view of the emails, calendar events, and IMmessages associated with the task based on a set of rules, and inresponse to determining that the task satisfies the predetermined state,transmitting a notification to a predetermined destination regardingstatus of the task.
 9. The machine-readable medium of claim 8, whereinquerying an CRM system associated with a user to identify a list of oneor more tasks associated with the user comprises: selecting a task to berelevant to the user if the user is an owner of the task; and selectinga task to be relevant to the user if the user is an earliest member ofan IM channel associated with the task and the user is active, and anowner of the task is not a member of the IM channel.
 10. Themachine-readable medium of claim 8, wherein determining whether the tasksatisfies a predetermined state in view of the emails, calendar events,and IM messages associated with the task based on a set of rulescomprises: determining whether a number of days since last time the taskwas updated is greater than a first predetermined threshold; determiningwhether a number of days since a last message was posted in an IMchannel associated with the task is greater than a second predeterminedthreshold; and indicating that the task satisfies the predeterminedstate as inactive, if the number of days since last time the task wasupdated is greater than the first predetermined threshold and the numberof days since a last message was posted in an IM channel associated withthe task is greater than the second predetermined threshold
 11. Themachine-readable medium of claim 10, wherein the operations furthercomprise: determining whether the task expects to be completed within apredetermined period of time; determining whether a number of days sincelast time the task satisfied the predetermined state is greater than athird predetermined threshold; and indicating that the task satisfiesthe predetermined state as inactive, if the task expects to be completedwithin the predetermined period of time and the number of days sincelast time the task satisfied the predetermined state is greater than thethird predetermined threshold.
 12. The machine-readable medium of claim11, wherein the operations further comprise determining whether the IMchannel associated with the task includes a member other than an ownerof the task, wherein the task is categorized as inactive if the IMchannel includes a member other than an owner of the task.
 13. Themachine-readable medium of claim 8, wherein determining whether the tasksatisfies a predetermined state in view of the emails, calendar events,and IM messages associated with the task based on a set of rulescomprises: determining whether there was a meeting associated with thetask conducted in a part predetermined period of time; determiningwhether a number of days since a last meeting of the task was conductedis greater than a first predetermined threshold; and indicating that thetask satisfies the predetermined state as lack of future meetings, ifthere was a meeting associated with the task conducted in the partpredetermined period of time and the number of days since a last meetingof the task was conducted is greater than the first predeterminedthreshold.
 14. The machine-readable medium of claim 13, wherein theoperations further comprise: determining whether there is a meeting thathas been scheduled in a future predetermined period of time; determiningwhether a number of days since last time the task satisfied thepredetermined state is greater than a second predetermined threshold;and indicating that the task satisfies the predetermined state as lackof future meetings, if there is no meeting scheduled in the futurepredetermined period of time and the number of days since last time thetask satisfied the predetermined state is greater than the secondpredetermined threshold.
 15. A data processing system, comprising: aprocessor; and a memory coupled to the processor to store instructions,which when executed by the processor, cause the processor to performoperations, the operations including querying a task database systemassociated with a user to identify a list of one or more tasksassociated with the user; and for each of the tasks associated with theuser, querying an email server associated with the user to obtain one ormore emails and one or more calendar events that are associated with thetask, querying an instant messaging (IM) server associated with the userto obtain IM messages of an IM channel of which the user is a member,wherein the IM channel was specifically created to exchange messagesconcerning the task amongst members, determining whether the tasksatisfies a predetermined state in view of the emails, calendar events,and IM messages associated with the task based on a set of rules, and inresponse to determining that the task satisfies the predetermined state,transmitting a notification to a predetermined destination regardingstatus of the task.
 16. The system of claim 15, wherein querying an CRMsystem associated with a user to identify a list of one or more tasksassociated with the user comprises: selecting a task to be relevant tothe user if the user is an owner of the task; and selecting a task to berelevant to the user if the user is an earliest member of an IM channelassociated with the task and the user is active, and an owner of thetask is not a member of the IM channel.
 17. The system of claim 15,wherein determining whether the task satisfies a predetermined state inview of the emails, calendar events, and IM messages associated with thetask based on a set of rules comprises: determining whether a number ofdays since last time the task was updated is greater than a firstpredetermined threshold; determining whether a number of days since alast message was posted in an IM channel associated with the task isgreater than a second predetermined threshold; and indicating that thetask satisfies the predetermined state as inactive, if the number ofdays since last time the task was updated is greater than the firstpredetermined threshold and the number of days since a last message wasposted in an IM channel associated with the task is greater than thesecond predetermined threshold
 18. The system of claim 17, wherein theoperations further comprise: determining whether the task expects to becompleted within a predetermined period of time; determining whether anumber of days since last time the task satisfied the predeterminedstate is greater than a third predetermined threshold; and indicatingthat the task satisfies the predetermined state as inactive, if the taskexpects to be completed within the predetermined period of time and thenumber of days since last time the task satisfied the predeterminedstate is greater than the third predetermined threshold.
 19. The systemof claim 18, wherein the operations further comprise determining whetherthe IM channel associated with the task includes a member other than anowner of the task, wherein the task is categorized as inactive if the IMchannel includes a member other than an owner of the task.
 20. Thesystem of claim 15, wherein determining whether the task satisfies apredetermined state in view of the emails, calendar events, and IMmessages associated with the task based on a set of rules comprises:determining whether there was a meeting associated with the taskconducted in a part predetermined period of time; determining whether anumber of days since a last meeting of the task was conducted is greaterthan a first predetermined threshold; and indicating that the tasksatisfies the predetermined state as lack of future meetings, if therewas a meeting associated with the task conducted in the partpredetermined period of time and the number of days since a last meetingof the task was conducted is greater than the first predeterminedthreshold.
 21. The system of claim 20, wherein the operations furthercomprise: determining whether there is a meeting that has been scheduledin a future predetermined period of time; determining whether a numberof days since last time the task satisfied the predetermined state isgreater than a second predetermined threshold; and indicating that thetask satisfies the predetermined state as lack of future meetings, ifthere is no meeting scheduled in the future predetermined period of timeand the number of days since last time the task satisfied thepredetermined state is greater than the second predetermined threshold.